home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 4
/
Amiga Tools 4.iso
/
tools
/
wb-enhancement
/
swazblanker
/
programmer
/
dev
/
exampleblanker.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-26
|
8KB
|
330 lines
/*
** $VER: Example 2.20 (28.11.95)
** SwazBlanker Release 2.20
**
** Example SwazBlanker Module Source
**
** (C) Copyright 1992-95 David Swasbrook,
** All Rights Reserved
*/
/********************************************************************
Well here is some example source for SwazBlanker 2.20
* SB_Init() interface to get invocation method.
* uses "swazconfig.library" support for shared
configuration file
* Sorry that this source is not 100% documented. Any
problems please email swaz@ait.ac.nz
********************************************************************/
#include <stdio.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <proto/swazblanker.h>
#include <proto/swazconfig.h>
#include <libraries/swazblanker.h>
#include <libraries/swazconfig.h>
/*
** Setup the library bases we need to open
*/
struct SwazBlankerBase *SwazBlankerBase;
struct SwazConfigBase *SwazConfigBase;
/*
** Standard version string
*/
#define VERSION 2
#define REVISION 20
extern UBYTE VersionStr[] = "$VER: ExampleBlanker 2.20 (28.11.95)";
extern UBYTE NameStr[] = "ExampleBlanker";
extern UBYTE Name[] = "Example";
/*
** SwazBlanker ID string
**
** The blanker identification string used to be different, i have
** changed to the new format and now the blanker is run with the
** argument INFO to query the necessary info... this way it can
** easily be localized.
**
*/
extern UBYTE ID[] = "\0$BLANKER:Ver 2:";
/*
** SwazBlanker Init Structure
*/
struct SBInit *SBInit;
struct BPrefs {
LONG Option1;
WORD Option2;
WORD Option3;
};
struct BPrefs BPrefs;
#define DEF_OPTION1 57
#define DEF_OPTION2 127
#define DEF_OPTION3 33
STRPTR CFT[] = {
"Option1",
"Option2",
"Option3",
NULL
};
#define CFT_OPTION1 0
#define CFT_OPTION2 1
#define CFT_OPTION3 2
LONG CF_GetNumeric( APTR cf, STRPTR Name, LONG def )
{
struct SC_ConfigVar *cv;
STRPTR s;
LONG v;
s = 0;
if( cv = SC_FindConfigVar( cf, Name ) )
s = cv->Data;
if( s ) {
if( StrToLong( s, &v ) == -1 ) v = def;
}
else v = def;
return( v );
}
STRPTR FmtNumeric( STRPTR b, LONG v )
{
sprintf(b,"%ld",v);
return( b );
}
void DefaultPrefs( struct BPrefs *p )
{
p->Option1 = 0;
p->Option2 = 1;
p->Option3 = 2;
}
void LoadPrefs( struct BPrefs *p, STRPTR FileName )
{
APTR cf;
DefaultPrefs( p );
if( cf = SC_ReadConfig( FileName, &*Name ) )
{
p->Option1 = CF_GetNumeric( cf, CFT[ CFT_OPTION1 ], DEF_OPTION1 );
p->Option2 = CF_GetNumeric( cf, CFT[ CFT_OPTION2 ], DEF_OPTION2 );
p->Option3 = CF_GetNumeric( cf, CFT[ CFT_OPTION3 ], DEF_OPTION3 );
SC_FreeConfig( cf );
}
}
void SavePrefs( struct BPrefs *p, STRPTR FileName )
{
APTR cf;
UBYTE V[32];
if( cf = SC_ReadConfig( FileName, &*Name ) )
{
SC_SetConfigVarByName( cf, CFT[ CFT_OPTION1 ], FmtNumeric( &*V, p->Option1 ) );
SC_SetConfigVarByName( cf, CFT[ CFT_OPTION2 ], FmtNumeric( &*V, p->Option2 ) );
SC_SetConfigVarByName( cf, CFT[ CFT_OPTION3 ], FmtNumeric( &*V, p->Option3 ) );
SC_WriteConfig( cf, FileName, &*Name );
SC_FreeConfig( cf );
}
}
/****** exampleblanker/Prefs() ***********************************
*
* SYNTAX
* Prefs()
*
* FUNCTION
* This is the preferences configuration interface for
* the blanker.
*
* NOTE
* Your user-interface should use the same font as set in
* the SwazBlanker preferences. This can be obtained
* from the SwazBlanker semaphore ssem->InterfaceFont.
* This is pointer to a string, Eg "Helvetica 11".
*
*****************************************************************/
void Prefs(void)
{
ULONG r;
struct BlankerPrefsNode *bpn;
struct EasyStruct es = {
sizeof(struct EasyStruct),
0,
"Example Blanker",
"No configuration required",
"Save|Use|Cancel" };
LoadPrefs( &BPrefs, SwazBlankerBase->UseFileName );
if( bpn = SB_AddPrefsTaskTagList( &*NameStr, NULL ) )
{
switch( EasyRequest(NULL,&es,NULL,NULL) )
{
case 0: /*** CANCEL ***/
break;
case 1: /*** SAVE ***/
SavePrefs( &BPrefs, SwazBlankerBase->SaveFileName );
SavePrefs( &BPrefs, SwazBlankerBase->UseFileName );
break;
case 2: /*** USE ONLY ***/
SavePrefs( &BPrefs, SwazBlankerBase->UseFileName );
break;
}
SB_RemPrefsTask( bpn );
}
}
/*
** To do help simply:
**
APTR SBHelp=NULL;
SBHelp = SB_HelpTags(
&*Name, NULL,
SBHELP_BlankerPrefs, bpn,
SBHELP_Directory, TRUE,
TAG_DONE);
.
.
.
SB_HelpClose( SBHelp );
*/
/****** exampleblanker/Blank() ***********************************
*
* SYNTAX
* Blank()
*
* FUNCTION
* This is the actual blanker routine.
*
*****************************************************************/
void Blank(void)
{
struct Screen *screen;
struct Window *window;
WORD CSpec[] = { 0,0,0,0, -1 };
screen = SB_OpenScreenTags(
SA_DisplayID, 0,
SA_Depth, 1,
SA_Colors, &CSpec,
TAG_DONE);
if(screen)
{
window = SB_OpenWindowTags(
WA_CustomScreen,screen,
TAG_DONE);
if(window)
{
SB_SetBlankerScreen( screen, window ); /* Set the blankers screen and window */
SB_BlankerReady(); /* Tell SwazBlanker we are working */
Wait(SIGBREAKF_CTRL_C); /* Wait for abort signal */
SB_ClrBlankerScreen( screen, window ); /* Restore old screen */
CloseWindow(window);
}
CloseScreen(screen);
}
}
/****************************************************************
Please examine this startup code carefully, it has changed from
prior version of the Example.c blanker source code. Please check
the SBInit->Method when your module is invoked.
If you choose to use swazconfig.library you may wish to share the
same config file as specified by:
SwazBlankerBase->UseFileName = env:matrix/SwazBlanker.conf
and SwazBlankerBase->SaveFileName = envarc:matrix/SwazBlanker.conf
Use your module name for the name of your data section.
***************************************************************/
void main (int argc, char **argv)
{
if( SwazBlankerBase = (struct SwazBlankerBase *) OpenLibrary( "swazblanker.library", 42 ) )
{
if( SwazConfigBase = (struct SwazConfigBase *) OpenLibrary( "swazconfig.library", 1 ) )
{
if( SBInit = SB_InitTags( SBINIT_Name,"Example", TAG_DONE ) )
{
switch( SBInit->Method )
{
case SBINIT_METHOD_BLANK: /* We need to blank the screen */
LoadPrefs( &BPrefs, SwazBlankerBase->UseFileName );
Blank();
break;
case SBINIT_METHOD_PREFS: /* Need to invoke the preferences editor */
Prefs();
break;
case SBINIT_METHOD_INFO:
SB_PrintInfoTags( SBInit,
SBINFO_Author, "Authors Name (Nick)",
SBINFO_EMail, "Author@somesite.amiga.com",
SBINFO_ShortDesc, "Very short description",
SBINFO_LongDesc, "Long multi line description",
SBINFO_Version, VERSION,
SBINFO_Revision, REVISION,
// SBINFO_Time, &TimeStr[6],
SBINFO_CPULoading, SBINFOLOAD_MEDIUM,
TAG_DONE );
}
SB_FreeInit( SBInit );
}
CloseLibrary( (struct Library *) SwazBlankerBase );
}
CloseLibrary( (struct Library *) SwazConfigBase );
}
}